#pragma once
#include <string>

enum TaskStatus
{
  Todo,
  Done,
  Abandon,
};

class Task
{
private:
  std::string text;
  TaskStatus status;
  Task *next;
  Task *prev;
  Task *parent;
  Task *child_head;
  Task *child_tail;

public:
  Task(std::string text);
  std::string get_text();
  void set_text(std::string);
  void change_status();
  std::string get_status();
  Task *get_next();
  void set_parent(Task *);
  Task *get_parent();
  void set_next(Task *);
  Task *get_prev();
  void set_prev(Task *);
  Task *get_child_head();
  void set_child_head(Task *);
  Task *get_child_tail();
  void set_child_tail(Task *);
};
